package com.kl.valid;

import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.constraints.NotBlank;
import java.lang.annotation.*;

/**
 * 自定义校验注解
 */

@Documented
// 关键！注解关联的校验器，真正的指定校验逻辑
@Constraint(validatedBy = {ListValueConstraintValidator.class})
// 注解能作用的范围
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE,
        ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
// 注解作用的时机
@Retention(RetentionPolicy.RUNTIME)
public @interface ListValue {

    // 校验不通过的提示信息，javax.validation.constraints.NotBlank.message是一个key
    // 这个key在JSR303里是默认放在ValidationMessages.properties配置文件中
    // 我们可以在资源目录下也创建一个这样的文件，然后说明我们的key-value
    String message() default "{com.kl.valid.ListValue.message}";

    // 支持分组校验
    Class<?>[] groups() default {};

    // 提供其他的附加信息
    Class<? extends Payload>[] payload() default {};

    int[] values() default {};
}
